"""
Demonstrates how to create points and change some of the properties of points.
"""
import os
import simplekml

# Cities of the World with their coordinates and time corresponding to 12:00 noon, Eastern Standard Time
# Source: http://www.infoplease.com/ipa/A0001769.html
cities = [
    ('Aberdeen, Scotland', '5:00 p.m.', 57.15, -2.15),
    ('Adelaide, Australia', '2:30 a.m.', -34.916667, 138.6),
    ('Algiers, Algeria', '6:00 p.m.', 36.833333, 3),
    ('Amsterdam, Netherlands', '6:00 p.m.', 52.366667, 4.883333),
    ('Ankara, Turkey', '7:00 p.m.', 39.916667, 32.916667),
    ('Asuncion, Paraguay', '1:00 p.m.', -25.25, -57.666667),
    ('Athens, Greece', '7:00 p.m.', 37.966667, 23.716667),
    ('Auckland, New Zealand', '5:00 a.m.', -36.866667, 174.75),
    ('Bangkok, Thailand', 'midnight', 13.75, 100.5),
    ('Barcelona, Spain', '6:00 p.m.', 41.383333, 2.15),
    ('Beijing, China', '1:00 a.m.', 39.916667, 116.416667),
    ('Belem, Brazil', '2:00 p.m.', -1.466667, -48.483333),
    ('Belfast, Northern Ireland', '5:00 p.m.', 54.616667, -5.933333),
    ('Belgrade, Serbia', '6:00 p.m.', 44.866667, 20.533333),
    ('Berlin, Germany', '6:00 p.m.', 52.5, 13.416667),
    ('Birmingham, England', '5:00 p.m.', 52.416667, -1.916667),
    ('Bogota, Colombia', '12:00 noon', 4.533333, -74.25),
    ('Bombay, India', '10:30 p.m.', 19, 72.8),
    ('Bordeaux, France', '6:00 p.m.', 44.833333, -0.516667),
    ('Bremen, Germany', '6:00 p.m.', 53.083333, 8.816667),
    ('Brisbane, Australia', '3:00 a.m.', -27.483333, 153.133333),
    ('Bristol, England', '5:00 p.m.', 51.466667, -2.583333),
    ('Brussels, Belgium', '6:00 p.m.', 50.866667, 4.366667),
    ('Bucharest, Romania', '7:00 p.m.', 44.416667, 26.116667),
    ('Budapest, Hungary', '6:00 p.m.', 47.5, 19.083333),
    ('Buenos Aires, Argentina', '2:00 p.m.', -34.583333, -58.366667),
    ('Cairo, Egypt', '7:00 p.m.', 30.033333, 31.35),
    ('Calcutta, India', '10:30 p.m.', 22.566667, 88.4),
    ('Canton, China', '1:00 a.m.', 23.116667, 113.25),
    ('Cape Town, South Africa', '7:00 p.m.', -33.916667, 18.366667),
    ('Caracas, Venezuela', '1:00 p.m.', 10.466667, -67.033333),
    ('Cayenne, French Guiana', '2:00 p.m.', 4.816667, -52.3),
    ('Chihuahua, Mexico', '10:00 a.m.', 28.616667, -106.083333),
    ('Chongqing, China', '1:00 a.m.', 29.766667, 106.566667),
    ('Copenhagen, Denmark', '6:00 p.m.', 55.666667, 12.566667),
    ('Cordoba, Argentina', '2:00 p.m.', -31.466667, -64.166667),
    ('Dakar, Senegal', '5:00 p.m.', 14.666667, -17.466667),
    ('Darwin, Australia', '2:30 a.m.', -12.466667, 130.85),
    ('Djibouti, Djibouti', '8:00 p.m.', 11.5, 43.05),
    ('Dublin, Ireland', '5:00 p.m.', 53.333333, -6.25),
    ('Durban, South Africa', '7:00 p.m.', -29.883333, 30.883333),
    ('Edinburgh, Scotland', '5:00 p.m.', 55.916667, -3.166667),
    ('Frankfurt, Germany', '6:00 p.m.', 50.116667, 8.683333),
    ('Georgetown, Guyana', '1:00 p.m.', 6.75, -58.25),
    ('Glasgow, Scotland', '5:00 p.m.', 55.833333, -4.25),
    ('Guatemala City, Guatemala', '11:00 a.m.', 14.616667, -90.516667),
    ('Guayaquil, Ecuador', '12:00 noon', -2.166667, -79.933333),
    ('Hamburg, Germany', '6:00 p.m.', 53.55, 10.033333),
    ('Hammerfest, Norway', '6:00 p.m.', 70.633333, 23.633333),
    ('Havana, Cuba', '12:00 noon', 23.133333, -82.383333),
    ('Helsinki, Finland', '7:00 p.m.', 60.166667, 25),
    ('Hobart, Tasmania', '3:00 a.m.', -42.866667, 147.316667),
    ('Hong Kong, China', '1:00 a.m.', 22.333333, 114.183333),
    ('Iquique, Chile', '1:00 p.m.', -20.166667, -70.116667),
    ('Irkutsk, Russia', '1:00 a.m.', 52.5, 104.333333),
    ('Jakarta, Indonesia', 'midnight', -6.266667, 106.8),
    ('Johannesburg, South Africa', '7:00 p.m.', -26.2, 28.066667),
    ('Kingston, Jamaica', '12:00 noon', 17.983333, -76.816667),
    ('Kinshasa, Congo', '6:00 p.m.', -4.3, 15.283333),
    ('Kuala Lumpur, Malaysia', '1:00 a.m.', 3.133333, 101.7),
    ('La Paz, Bolivia', '1:00 p.m.', -16.45, -68.366667),
    ('Leeds, England', '5:00 p.m.', 53.75, -1.5),
    ('Lima, Peru', '12:00 noon', -12, -77.033333),
    ('Lisbon, Portugal', '5:00 p.m.', 38.733333, -9.15),
    ('Liverpool, England', '5:00 p.m.', 53.416667, -3),
    ('London, England', '5:00 p.m.', 51.533333, -0.083333),
    ('Lyons, France', '6:00 p.m.', 45.75, 4.833333),
    ('Madrid, Spain', '6:00 p.m.', 40.433333, -3.7),
    ('Manchester, England', '5:00 p.m.', 53.5, -2.25),
    ('Manila, Philippines', '1:00 a.m.', 14.583333, 120.95),
    ('Marseilles, France', '6:00 p.m.', 43.333333, 5.333333),
    ('Mazatlan, Mexico', '10:00 a.m.', 23.2, -106.416667),
    ('Mecca, Saudi Arabia', '8:00 p.m.', 21.483333, 39.75),
    ('Melbourne, Australia', '3:00 a.m.', -37.783333, 144.966667),
    ('Mexico City, Mexico', '11:00 a.m.', 19.433333, -99.116667),
    ('Milan, Italy', '6:00 p.m.', 45.45, 9.166667),
    ('Montevideo, Uruguay', '2:00 p.m.', -34.883333, -56.166667),
    ('Moscow, Russia', '8:00 p.m.', 55.75, 37.6),
    ('Munich, Germany', '6:00 p.m.', 48.133333, 11.583333),
    ('Nagasaki, Japan', '2:00 a.m.', 32.8, 129.95),
    ('Nagoya, Japan', '2:00 a.m.', 35.116667, 136.933333),
    ('Nairobi, Kenya', '8:00 p.m.', -1.416667, 36.916667),
    ('Nanjing (Nanking), China', '1:00 a.m.', 32.05, 118.883333),
    ('Naples, Italy', '6:00 p.m.', 40.833333, 14.25),
    ('New Delhi, India', '10:30 p.m.', 28.583333, 77.2),
    ('Newcastle-on-Tyne, England', '5:00 p.m.', 54.966667, -1.616667),
    ('Odessa, Ukraine', '7:00 p.m.', 46.45, 30.8),
    ('Osaka, Japan', '2:00 a.m.', 34.533333, 135.5),
    ('Oslo, Norway', '6:00 p.m.', 59.95, 10.7),
    ('Panama City, Panama', '12:00 noon', 8.966667, -79.533333),
    ('Paramaribo, Suriname', '2:00 p.m.', 5.75, -55.25),
    ('Paris, France', '6:00 p.m.', 48.8, 2.333333),
    ('Perth, Australia', '1:00 a.m.', -31.95, 115.866667),
    ('Plymouth, England', '5:00 p.m.', 50.416667, -4.083333),
    ('Port Moresby, Papua New Guinea', '3:00 a.m.', -9.416667, 147.133333),
    ('Prague, Czech Republic', '6:00 p.m.', 50.083333, 14.433333),
    ('Rangoon, Myanmar', '11:30 p.m.', 16.833333, 96),
    ('Reykjavik, Iceland', '5:00 p.m.', 64.066667, -21.966667),
    ('Rio de Janeiro, Brazil', '2:00 p.m.', -22.95, -43.2),
    ('Rome, Italy', '6:00 p.m.', 41.9, 12.45),
    ('Salvador, Brazil', '2:00 p.m.', -12.933333, -38.45),
    ('Santiago, Chile', '1:00 p.m.', -33.466667, -70.75),
    ('St. Petersburg, Russia', '8:00 p.m.', 59.933333, 30.3),
    ('Sao Paulo, Brazil', '2:00 p.m.', -23.516667, -46.516667),
    ('Shanghai, China', '1:00 a.m.', 31.166667, 121.466667),
    ('Singapore, Singapore', '1:00 a.m.', 1.233333, 103.916667),
    ('Sofia, Bulgaria', '7:00 p.m.', 42.666667, 23.333333),
    ('Stockholm, Sweden', '6:00 p.m.', 59.283333, 18.05),
    ('Sydney, Australia', '3:00 a.m.', -34, 151),
    ('Tananarive, Madagascar', '8:00 p.m.', -18.833333, 47.55),
    ('Teheran, Iran', '8:30 p.m.', 35.75, 51.75),
    ('Tokyo, Japan', '2:00 a.m.', 35.666667, 139.75),
    ('Tripoli, Libya', '7:00 p.m.', 32.95, 13.2),
    ('Venice, Italy', '6:00 p.m.', 45.433333, 12.333333),
    ('Veracruz, Mexico', '11:00 a.m.', 19.166667, -96.166667),
    ('Vienna, Austria', '6:00 p.m.', 48.233333, 16.333333),
    ('Vladivostok, Russia', '3:00 a.m.', 43.166667, 132),
    ('Warsaw, Poland', '6:00 p.m.', 52.233333, 21),
    ('Wellington, New Zealand', '5:00 a.m.', -41.283333, 174.783333),
    ('Zurich, Switzerland', '6:00 p.m.', 47.35, 8.516667)
]

# Create an instance of Kml
kml = simplekml.Kml(name="Point", open=1)

# Create a point named "The World" attached to the KML document with its coordinate at 0 degrees latitude and longitude.
# All the point's properties are given when it is constructed.
single_point = kml.newpoint(name="The World", coords=[(0.0,0.0)])

# Create a point for each city. The points' properties are assigned after the point is created
for city, time, lat, lon in cities:
    pnt = kml.newpoint()
    pnt.name = city
    pnt.description = "Time corresponding to 12:00 noon, Eastern Standard Time: {0}".format(time)
    pnt.coords = [(lon, lat)]

# Save the KML
kml.save(os.path.splitext(__file__)[0] + ".kml")